﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace BMMSI_projekt
{
    public static class Obliczenia
    {
        public static int ZamienCiagKodowyNaLiczbe(string s)
        {
            if (s.FirstOrDefault(c => (c != '0' && c != '1')) == 0)
            {
                double liczba = 0.0;
                double temp;
                int dlugoscCiagu = s.Length;

                for (int i = 0; i < dlugoscCiagu; i++)
                {
                    temp = double.Parse(s[dlugoscCiagu - i - 1].ToString());
                    liczba += temp * Math.Pow(2.0, i);
                }

                return (int)liczba;
            }
            else
            {
                throw new Exception("Błąd przy konwersji na liczbę. Ciąg kodowy może zawierać tylko zera lub jedynki.");
            }
        }

        public static string ZamienLiczbeNaCiagKodowy(int liczba)
        {
            if (liczba > 0)
            {
                string s = string.Empty;

                while (liczba > 0)
                {
                    if (liczba % 2 == 1)
                    {
                        s = "1" + s;
                    }
                    else
                    {
                        s = "0" + s;
                    }

                    liczba = liczba / 2;
                }

                return s;
            }
            else if (liczba == 0)
            {
                return "0";
            }
            else
            {
                throw new Exception("Błąd przy konwersji na ciąg kodowy. Liczba musi być większa od zera");
            }
        }
    }
}
